Added error logging to the block hotplug script, and support facilities for
authoremellor@ewan <emellor@ewan>
Mon, 10 Oct 2005 13:42:38 +0000 (14:42 +0100)
committeremellor@ewan <emellor@ewan>
Mon, 10 Oct 2005 13:42:38 +0000 (14:42 +0100)
that.

Signed-off-by: Ewan Mellor <ewan@xensource.com>
tools/examples/Makefile
tools/examples/block
tools/examples/xen-hotplug-common.sh [new file with mode: 0644]

index e09a35a8acca7d62723423e3062c80441a951c1c..83a9f7c1018d670a77240d4c61b26becdef7c99b 100644 (file)
@@ -24,6 +24,7 @@ XEN_SCRIPTS += network-route vif-route
 XEN_SCRIPTS += network-nat vif-nat
 XEN_SCRIPTS += block
 XEN_SCRIPTS += block-enbd
+XEN_SCRIPTS += xen-hotplug-common.sh
 
 XEN_HOTPLUG_DIR = /etc/hotplug
 XEN_HOTPLUG_SCRIPTS = xen-backend.agent
index 4fec0d6597ee0b3718f9855489712a4121bebe67..2e383bb3a660e82aae308046b9793b533d907b0d 100644 (file)
@@ -1,8 +1,7 @@
 #!/bin/sh
 
-set -e
-
-export PATH=/sbin:/bin:/usr/bin:/usr/sbin:$PATH
+dir=$(dirname "$0")
+. "$dir/xen-hotplug-common.sh"
 
 expand_dev() {
   local dev
@@ -25,15 +24,15 @@ write_dev() {
   major=$(stat -L -c %t "$1")
   minor=$(stat -L -c %T "$1")
   pdev=$(printf "0x%02x%02x" 0x$major 0x$minor)
-  xenstore-write "$XENBUS_PATH"/physical-device $pdev \
+  xenstore_write "$XENBUS_PATH"/physical-device $pdev \
       "$XENBUS_PATH"/node $1
 }
 
-t=$(xenstore-read "$XENBUS_PATH"/type)
+t=$(xenstore_read "$XENBUS_PATH"/type || true)
 
 case $1 in 
   bind)
-    p=$(xenstore-read "$XENBUS_PATH"/params)
+    p=$(xenstore_read "$XENBUS_PATH"/params)
     case $t in 
       phy)
         dev=$(expand_dev $p)
@@ -60,7 +59,7 @@ case $1 in
     ;;
 
   unbind)
-    node=$(xenstore-read "$XENBUS_PATH"/node)
+    node=$(xenstore_read "$XENBUS_PATH"/node)
     case $t in 
       phy)
        exit 0
diff --git a/tools/examples/xen-hotplug-common.sh b/tools/examples/xen-hotplug-common.sh
new file mode 100644 (file)
index 0000000..b1e1be6
--- /dev/null
@@ -0,0 +1,26 @@
+set -e
+
+export PATH=/sbin:/bin:/usr/bin:/usr/sbin:$PATH
+
+log() {
+  local level="$1"
+  shift
+  logger -p "daemon.$level" -- "$0:" "$@" || echo "$0 $@" >&2
+}
+
+xenstore_read() {
+  local v=$(xenstore-read "$XENBUS_PATH"/type || true)
+  if [ "$v" == "" ]
+  then
+    log error "xenstore-read $XENBUS_PATH/type failed."
+    exit 1
+  fi
+  echo "$v"
+}
+
+xenstore_write() {
+  log debug "Writing $@ to xenstore."
+  xenstore-write "$@" || log error "Writing $@ to xenstore failed."
+}
+
+log debug "$@" "XENBUS_PATH=$XENBUS_PATH"